/**
 * 声明变量三种方式 es5:var (2015之后版本)es6:let const
 * var let const区别？
 */
/**
 * 使用var声明变量
 * 1.变量会提升 
 *  console.log(a);var a = 10;
 *  提升为var a; console.log(a); a= 10;
 * 2.可以重复声明变量 
 *  var a = 10; var a = 'hello'; 
 * 3.不存在块级作用域 for(){} if(){}
 * if(true){
      var a = 10;
    }
    console.log(a);
 */


/**
 * let声明变量特点：
 * 1.不会进行变量提升 
 *    console.log(a);//报错 
      let a = 10;
 * 2.不允许重复声明变量
      let a = 10;
      let a = 'hello';//报错 
   3.可以对声明变量重新赋值 
    let a = 10;//声明变量并进行初始化 
    a = 'hello';
    console.log(a);
   4.存在块级作用域 
   if(true){
    let a = 10;
   }
   console.log(a);//报错
 */


/**
 * const声明常量 
 * 特点：
 *  1.不允许重复声明变量 
 *  const a = 10;
    const a = 'hello';//报错 
 *  2.不会进行变量提升 
    console.log(a);//报错 
    const a = 10;
    3.声明变量必须初始化
    const a = xxx;
    4.声明变量初始化后不可以重新赋值 
    const a = 10;
    a = 'hello';
    console.log(a);//报错 
    5.存在块级作用域 
    if(true){
      const a = 10;
    }
    console.log(a);
 */



